package com.oldbook.manage.domain;

import com.oldbook.common.annotation.Excel;
import com.oldbook.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 学生信息维护对象 tb_student_info
 *
 * @author Exiaoke
 * @date 2025-02-19
 */
@ApiModel(description = "学生信息维护对象")
@Data // Lombok annotation to generate all the boilerplate that is normally required for POJOs.
@NoArgsConstructor // Generates a constructor with no parameters.
@AllArgsConstructor // Generates a constructor with 1 parameter for each field in the class.
public class StudentInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**
     * 学生ID（主键）
     */
    @ApiModelProperty(value = "学生ID（主键）", name = "studentId", example = "", required = true)
    private Long studentId;

    /**
     * 关联用户ID（外键，指向sys_user.user_id）
     */
    @ApiModelProperty(value = "关联用户ID（外键，指向sys_user.user_id）", name = "userId", example = "", required = true)
    private Long userId;

    /**
     * 学号（唯一）
     */
    @Excel(name = "学号", readConverterExp = "唯=一")
    @ApiModelProperty(value = "学号（唯一）", name = "studentNumber", example = "", required = true)
    private String studentNumber;

    /**
     * 学生姓名
     */
    @Excel(name = "学生姓名")
    @ApiModelProperty(value = "学生姓名", name = "studentName", example = "", required = true)
    private String studentName;

    /**
     * 专业
     */
    @Excel(name = "专业")
    @ApiModelProperty(value = "专业", name = "major", example = "", required = true)
    private String major;

    /**
     * 班级
     */
    @Excel(name = "班级")
    @ApiModelProperty(value = "班级", name = "className", example = "", required = true)
    private String className;

    /**
     * 诚信值（默认100）
     */
    @Excel(name = "诚信值", readConverterExp = "默=认100")
    @ApiModelProperty(value = "诚信值（默认100）", name = "creditScore", example = "", required = true)
    private Long creditScore;

    /**
     * 登录密码
     */
    @Excel(name = "登录密码")
    @ApiModelProperty(value = "登录密码", name = "passWord", example = "", required = true)
    private String password;

    /**
     * 性别（0-女，1-男，2-未知）
     */
    @Excel(name = "性别", readConverterExp = "0=-女，1-男，2-未知")
    @ApiModelProperty(value = "性别（0-女，1-男，2-未知）", name = "gender", example = "", required = true)
    private String gender;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    @ApiModelProperty(value = "联系方式", name = "contact", example = "", required = true)
    private String contact;


}